package com.crm.biz.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.crm.annotation.SystemServiceLog;
import com.crm.model.BizFinanceApproving;
import com.crm.model.BizFinanceCostclass;
import com.crm.model.BizFinancePayee;
import com.crm.model.entity.Tree;
import com.crm.service.BizFinanceApprovingService;
import com.crm.service.BizFinanceCostclassService;
import com.crm.service.BizFinancePayeeService;
import com.crm.util.AopConfig;
import com.crm.util.JsonUtil;
import com.crm.util.ResponseUtil;
import com.crm.util.UUIDUtil;
import com.github.pagehelper.Page;

@Controller
@RequestMapping("/bizFinance")
public class BizFinanceController {

	@Autowired
	private BizFinancePayeeService bizFinancePayeeService;

	@Autowired
	private BizFinanceCostclassService bizFinanceCostclassService;
	
	@Autowired
	private BizFinanceApprovingService bizFinanceApprovingService;

	@RequestMapping("/index")
	public String index() {

		return "configuration/financeConfig";
	}

	@RequestMapping("/load")
	@ResponseBody
	public void getAll(HttpServletResponse response, HttpServletRequest request, Page<BizFinancePayee> page,
			BizFinancePayee t) {

		Page<BizFinancePayee> list = (Page<BizFinancePayee>) bizFinancePayeeService.selectAll(page, t);

		ResponseUtil.resultPage(response, request, list);
	}

	/**
	 * 
	 * @Description : 添加收款人
	 * @author zealot
	 * @param @param
	 *            record
	 * @param @return
	 * @return Map<String,Object>
	 * @version 创建时间 : 2016年11月19日 上午11:38:59
	 * @thorws
	 */
	@SystemServiceLog(description = AopConfig.FINANCEPAEE + AopConfig.ADD, type = AopConfig.ADD)
	@RequestMapping("/addNewRecord")
	@ResponseBody
	public Map<String, Object> addNewRecord(BizFinancePayee record) {

		Map<String, Object> map = new HashMap<>();
		record.setFinancePayeeId(UUIDUtil.getUUID());
		bizFinancePayeeService.insert(record);

		map.put("status", "success");
		map.put("msg", "新增成功！");

		return map;
	}

	/**
	 * 
	 * @Description : 编辑收款人
	 * @author zealot
	 * @param @param
	 *            record
	 * @param @return
	 * @return Map<String,Object>
	 * @version 创建时间 : 2016年11月19日 上午11:40:22
	 * @thorws
	 */
	@SystemServiceLog(description = AopConfig.FINANCEPAEE + AopConfig.UPDATE, type = AopConfig.UPDATE)
	@RequestMapping("/updateRecord")
	@ResponseBody
	public Map<String, Object> updateRecord(BizFinancePayee record) {

		Map<String, Object> map = new HashMap<>();

		bizFinancePayeeService.updateByPrimaryKey(record);

		map.put("status", "success");
		map.put("msg", "修改成功！");

		return map;
	}

	/**
	 * 
	 * @Description : 删除收款人
	 * @author zealot
	 * @param @param
	 *            record
	 * @param @return
	 * @return Map<String,Object>
	 * @version 创建时间 : 2016年11月19日 上午11:40:41
	 * @thorws
	 */
	@SystemServiceLog(description = AopConfig.FINANCEPAEE + AopConfig.DEL, type = AopConfig.DEL)
	@RequestMapping("/deleteRecord")
	@ResponseBody
	public Map<String, Object> deleteRecord(BizFinancePayee record) {

		Map<String, Object> map = new HashMap<>();

		record.setDeleteMark(0);
		bizFinancePayeeService.updateByPrimaryKey(record);

		map.put("status", "success");
		map.put("msg", "删除成功！");

		return map;
	}

	/**
	 * 
	 * @Description : 加载费用类型
	 * @author zealot
	 * @param @param
	 *            response
	 * @param @param
	 *            request
	 * @return void
	 * @version 创建时间 : 2016年11月19日 下午5:53:25
	 * @thorws
	 */
	@RequestMapping("/loadCostClass")
	public void loadCostClass(HttpServletResponse response, HttpServletRequest request, BizFinanceCostclass record) {

		List<BizFinanceCostclass> list = bizFinanceCostclassService.selectByUs(record);

		ResponseUtil.result(response, JsonUtil.toJsonStr(list));
	}

	/**
	 * 
	 * @Description : 加载费用分类树形结构
	 * @author zealot
	 * @param @param
	 *            response
	 * @param @param
	 *            request
	 * @param @param
	 *            record
	 * @return void
	 * @version 创建时间 : 2016年11月21日 下午3:03:48
	 * @thorws
	 */
	@RequestMapping("/loadCostClassTree")
	public void loadCostClassTree(HttpServletResponse response, HttpServletRequest request,
			BizFinanceCostclass record) {
		List<Tree> list = bizFinanceCostclassService.selectByTree(record);

		ResponseUtil.result(response, JsonUtil.toJsonStr(list));
	}

	/**
	 * 
	 * @Description : 添加费用类别
	 * @author zealot
	 * @param @param
	 *            record
	 * @param @return
	 * @return Map<String,Object>
	 * @version 创建时间 : 2016年11月19日 下午5:56:18
	 * @thorws
	 */
	@SystemServiceLog(description = AopConfig.COSTCLASS + AopConfig.ADD, type = AopConfig.ADD)
	@RequestMapping("/addNewRecordCostClass")
	@ResponseBody
	public Map<String, Object> addNewRecordCostClass(BizFinanceCostclass record) {

		Map<String, Object> map = new HashMap<>();
		record.setFinanceCostclassId(UUIDUtil.getUUID());
		bizFinanceCostclassService.insert(record);

		map.put("status", "success");
		map.put("msg", "新增成功！");

		return map;
	}
	
	/**
	 * 
	 * @Description : 添加费用类别
	 * @author zealot
	 * @param @param
	 *            record
	 * @param @return
	 * @return Map<String,Object>
	 * @version 创建时间 : 2016年11月19日 下午5:56:18
	 * @thorws
	 */
	@SystemServiceLog(description = AopConfig.COSTCLASS + AopConfig.UPDATE, type = AopConfig.UPDATE)
	@RequestMapping("/updateRecordCostClass")
	@ResponseBody
	public Map<String, Object> updateRecordCostClass(BizFinanceCostclass record) {

		Map<String, Object> map = new HashMap<>();
		bizFinanceCostclassService.updateByPrimaryKey(record);

		map.put("status", "success");
		map.put("msg", "修改成功！");

		return map;
	}
	
	/**
	 * 
	 * @Description : 添加财务审批流程
	 * @author zealot
	 * @param @param record
	 * @param @return
	 * @return Map<String,Object>
	 * @version 创建时间 : 2016年11月22日 上午10:21:49
	 * @thorws
	 */
	@SystemServiceLog(description = AopConfig.APPROVING + AopConfig.ADD, type = AopConfig.ADD)
	@RequestMapping("/addNewRecordApproving")
	@ResponseBody
	public Map<String, Object> addNewRecordApproving(BizFinanceApproving record) {
		Map<String, Object> map = new HashMap<>();
		List<BizFinanceApproving> list = bizFinanceApprovingService.selectByUs(record);
		
		if(list!=null){
			if(list.size()!=0){
				map.put("status", "error");
				map.put("msg", "该流程已经存在！");
				return map;
			}
		}
		
		record.setFinanceApprovingId(UUIDUtil.getUUID());
		bizFinanceApprovingService.insert(record);

		map.put("status", "success");
		map.put("msg", "新增成功！");

		return map;
	}
	
	/**
	 * 
	 * @Description : 审批流程修改
	 * @author zealot
	 * @param @param record
	 * @param @return
	 * @return Map<String,Object>
	 * @version 创建时间 : 2016年11月22日 上午10:25:06
	 * @thorws
	 */
	@SystemServiceLog(description = AopConfig.APPROVING + AopConfig.UPDATE, type = AopConfig.UPDATE)
	@RequestMapping("/updateRecordApproving")
	@ResponseBody
	public Map<String, Object> updateRecordApproving(BizFinanceApproving record) {

		Map<String, Object> map = new HashMap<>();
		bizFinanceApprovingService.updateByPrimaryKey(record);

		map.put("status", "success");
		map.put("msg", "修改成功！");

		return map;
	}
	
	/**
	 * 
	 * @Description : 加载流程信息
	 * @author zealot
	 * @param @param response
	 * @param @param request
	 * @param @param record
	 * @return void
	 * @version 创建时间 : 2016年11月22日 上午10:48:20
	 * @thorws
	 */
	@RequestMapping("/loadAppvoing")
	public void loadAppvoing(HttpServletResponse response, HttpServletRequest request, BizFinanceApproving record) {

		List<BizFinanceApproving> list = bizFinanceApprovingService.selectByUs(record);

		ResponseUtil.result(response, JsonUtil.toJsonStr(list));
	}
}
